{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Draw sample MNIST images from dataset\n",
    "Demonstrates how to sample and plot MNIST digits using `tf.keras` API.\n",
    "Using `tf.keras.datasets`, loading the MNIST data is just 1-line of code. After loading, the dataset is already grouped into train and test splits."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from __future__ import absolute_import\n",
    "from __future__ import division\n",
    "from __future__ import print_function\n",
    "\n",
    "import numpy as np\n",
    "from tensorflow.keras.datasets import mnist\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# load dataset\n",
    "(x_train, y_train), (x_test, y_test) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Bar graph of train data\n",
    "We can see that the labels are almost uniformly distributed.\n",
    "Note that this is ideal. In some datasets, the distribution may be highly un-balanced. In such cases, the training is more challenging."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train labels:  {0: 5923, 1: 6742, 2: 5958, 3: 6131, 4: 5842, 5: 5421, 6: 5918, 7: 6265, 8: 5851, 9: 5949}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# count the number of unique train labels\n",
    "unique, counts = np.unique(y_train, return_counts=True)\n",
    "print(\"Train labels: \", dict(zip(unique, counts)))\n",
    "\n",
    "plt.bar(unique, counts)\n",
    "plt.xticks(unique, unique)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The test data is also almost uniformly distributed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test labels:  {0: 980, 1: 1135, 2: 1032, 3: 1010, 4: 982, 5: 892, 6: 958, 7: 1028, 8: 974, 9: 1009}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# count the number of unique test labels\n",
    "unique, counts = np.unique(y_test, return_counts=True)\n",
    "print(\"Test labels: \", dict(zip(unique, counts)))\n",
    "\n",
    "plt.bar(unique, counts, color='orange')\n",
    "plt.xticks(unique, unique)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Random sample of data from train split\n",
    "Let us get and show 25 random samples from the train split."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 25 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# sample 25 mnist digits from train dataset\n",
    "indexes = np.random.randint(0, x_train.shape[0], size=25)\n",
    "images = x_train[indexes]\n",
    "labels = y_train[indexes]\n",
    "\n",
    "# plot the 25 mnist digits\n",
    "plt.figure(figsize=(5,5))\n",
    "for i in range(len(indexes)):\n",
    "    plt.subplot(5, 5, i + 1)\n",
    "    image = images[i]\n",
    "    plt.imshow(image, cmap='gray')\n",
    "    plt.axis('off')\n",
    "\n",
    "# plt.savefig(\"mnist-samples.png\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
